<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // Promise.prototype.then(callbackA[,callbackB]);
        // var p=new Promise(function(resolve,reject){
        //     // resolve("哈哈哈");
        //     reject();
        // });
        // p.then(function(data){
        //     console.log("执行了resolve方法，获取参数:",data);
        // },function(data){
        //     console.log("执行了reject方法，获取参数:",data);
        // });

        function returnPromise(){
            var pro=new Promise(function(resolve,reject){
                resolve();
                // reject();
            });
            return pro;
        }
        // var p=returnPromise();
        // p.then(function(data){
        //     console.log("执行了resolve方法，获取参数:",data);
        // },function(data){
        //     console.log("执行了reject方法，获取参数:",data);
        // });

        // var p=returnPromise();
        // var p2=p.then(function(){
        //     // 定义常规的js代码,
        //     // 1.如果函数中没有定义return返回值，该then方法会返回一个用于描述当前函数中js运行状态的promise对象
        //     // 新的promise对象依然是对该then方法状态的监控
        //     // var num=1;
        //     console.log(num);
        // },function(){
        //     console.log("调用了第二个回调函数");
        // });

        // p2.then(function(){
        //     console.log("上一个函数执行成功");
        // },function(error){
        //     console.log("上一个函数执行失败:",error);
        // });

        // var p3=returnPromise();
        // var p4=p3.then(function(){
        //     //2.如果在then方法中定义return 返回值，但是返回的结果值不是自定义的promise对象
        //     // then方法中return将返回的结果作为新的promise对象resolve状态下的参数进行传递
        //     return "啊啊啊啊";
        // },function(){
        //     console.log("执行了reject方法");
           
        // });

        // p4.then(function(data){
        //     console.log(data);
        // },function(error){
        //     console.log("上一个函数执行失败:",error);
        // });
        

        var p5=returnPromise();
        var p6=p5.then(function(){
            // 3.如果then方法中定义了return关键字，但是返回的是自己创建的Promise对象
            //自己创建的promise对象状态变化，影响后续then方法的执行
            var pnew=new Promise(function(resolve,reject){
                // resolve("嘻嘻");
                // reject("哈哈哈");
                setTimeout(resolve,3000,"我是参数");
            });
            return pnew;
        },function(){
            console.log("执行了reject方法");
        });
        p6.then(function(data){
            console.log("上一个函数执行成功",data);
        },function(error){
            console.log("上一个函数执行失败",error);
        });


       
    </script>
</head>
<body>
    
</body>
</html>